home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Topik
/
Topik - Disk 37 - Games 3 (19xx)(Topik Public Domain)(PD)[WB].zip
/
Topik - Disk 37 - Games 3 (19xx)(Topik Public Domain)(PD)[WB].adf
/
RUMMY
/
Rummy.DOC.pp
/
Rummy.DOC
Wrap
Text File
|
1991-02-24
|
24KB
|
474 lines
FILE: RUMMY.DOC
Rummy v1.00
By Simon Preene
Copyright Amiga Computing, 1990
Contents
Introduction
Requirements
Rules
Scoring
Screen Layout
Use Of The Program (short tutorial)
Modes Of Play
Reference
Description Of Source Code
Introduction.
This text file contains the instructions for and some notes on the
operation of Rummy. The program is designed to play the card game of
Rummy. I have played a number of variations of this game (variously
called Rummy, Gin-Rummy, or Sets), but they all have the same basic
objective: the collection of sets of cards which share some property. A
more detailed description of the game rules is included in the Rules
section below.
To start the program either double-click on the rummy icon, or type
rummy at the shell prompt.
Requirements.
The program consists of a single file on disk of about 80k in size,
and this contains all graphics and data needed by the program. Once
loaded the program appears to require about 160k. This is mainly used by
the three plane 640*200 screen. Consequently there should be no problem
running the game on an unexpanded A500.
Rules.
This section explains how to play the card game; using the program is
explained below.
The game is for either two or three players. A game consists of a
number of rounds (or hands), the overall objective being to achieve a
score lower than that of the other competitors (see scoring). The defualt
number of rounds is seven, but this can be easily changed.
At the start of each round, seven cards are dealt to each player
taking part. The players take turns to go first (round 1 player 1,round
player 2...). After dealing the top card of the pack is turned over to
form what will be referred to as the face up pile of cards, and the
remaining cards are placed to the left of this, face down, to form the
face down pile.
The objective in each round is for the players to get rid of
all their cards by forming sets of three or more cards and submitting them,
or by adding cards to sets which have already been submitted. Sets for
submission must consist of 3,4,5,6, or 7 cards which share some common
property, for example they may have the same number (such as 3diamonds,
3clubs, 3spades) (these are referred to as numsets in the coding), or
they may be a run of cards of the same suit (e.g. 5clubs, 6clubs, 7clubs)
(these are referred to as suitsets in the coding). For sets of the same
suit the ace can come before the two or after the king.
Cards to be added to an existing set must continue the progression of
cards already in the set. For example 3c (c means clubs, etc for d,s,h)
could be added to a set of 3d-3h-3s or 4c-5c-6c, but not to 5d-5s-5h
or 4d-5d-6d. The following lists some other examples
SET POSSIBLE ADDITIONS
1. jd-qd-kd 10d,ad
2. ad-ac-as ah
3. 2h-3h-4h-5h ah,6h
It is possible to add more than one card at a time, so if a player
had the 9d and 10d, then both could be added to the set 1 above. For sets
of the same suit, cards can be added to either end. Any number of valid
additions can be made to any number of sets while it is a players turn.
However a player can only add or submit cards when it is his turn, and
not when it is that of another player.
If a player cannot get rid of all his cards when it is his turn then
he has the option to exchange one of them for another card in one of the
following ways :
1. Take the card on the current face up pile, and replace it with one of
his own cards which is of no use;
2. Take the card on the current face down pile, and place one of
his own cards which is of no use on the face up pile;
3. If after seeing the face down card it is thought to be of no use, he
may place this on the face up pile.
Any one of the above can be chosen, but after seeing the face down
card it is only possible to take it in exchange for another, or put it
directly on the face up pile: i.e. the face up card is no longer
available.
After one of these actions has been taken the player has a second
opportunity to add or submit cards if this is possible.
If the player still has cards left at the end of his turn, the next
player then takes a turn and so on until one player has no cards left.
When this happens, the players' scores are updated based on how many
cards they have left and the round is over.
Scoring.
The scores are updated at the end of each round by adding the value
of the cards held by the player together and adding that to his current
score. For this purpose the cards are valued as one to thirteen for the
cards ace,2,3,...,10,jack,queen,king. The player with the lowest score
after all rounds have been played is the winner.
Screen Layout
In the top left corner of the screen are two piles of cards, the left
of which is referred to as the face down pile, and the right the face up
pile. When the program starts both are face down (showing the reverse of
a card). During a game the right will show a card face. Just to the
right of this is an area in which messages are displayed explaining what
is happening, e.g. the next players name, what that player has done,
whether operations completed successfully or not etc. There is also a
gadget controlling the number of rounds in a game (see below for how to
change this). The continue gadget also appears here.
Below the two packs are the status areas for each of the three
players. These consist of the cards the player is holding, which may be
face up or down during a game, but are blank initially since no game is
in progress. To the right of these are five pieces of information about
each player. The player's name is in a red box; this is a gadget allowing
the player's name to be changed. Other information is the value of the
player's hand (not displayed if the player's cards are not on
view), which is the amount which will be added to the score should that
player lose before getting another turn. The number of wins that player
has had, and the current score are also shown. The number of turns taken
appear last. Player one's data is at the top, then player two, and
finally player three.
On the far right of the screen are the face up sets which have been
submitted by the players. This area of the display is managed so that the
display of sets does not overflow into the rest of the display. For this
reason when new sets are submitted or additions made to existing sets,
the order in which the sets appear may change.
Use of the Program.
This section describes an example game using the default settings.
The program can be started from either the Workbench or the shell.
From the shell, typing rummy executes the program.
When the program starts it opens its own screen and displays some
initial information together with a message inviting the user to "use menus
to play". The menus are described in detail below, but for now use the
project menu to select the play submenu, and then the Three player game.
Seven cards will then be dealt to each of the three players. Those of
player one (user) will be visible to you, those of Lisa and Mike will be
face down. The face up pile will now have its top card overturned.
It is initially your turn (user appears on line two, and the pointer has
a 1 under it, signifying player one).
The cards of your hand will be sorted into ascending order, by number
within suit (see Reorder option below to change the display order). At
this point, if you can identify a set of three or more cards in your
hand, you may submit it now. To do this select each member of the
set (it will then be complemented to grey). If you select a card
which is not in the set, deselect it by clicking on it again with the
mouse. Once each member of the set is selected, click on the "submit new
set" gadget. At this point, if the selected cards form a valid set they
will be removed from your hand and displayed as a "face up set" on the
right side of the screen; if on the other hand they do not form a valid
set the selected cards will remain your hand of cards, still selected. At
this point you should check that
1. All selected cards form a SINGLE valid set
2. At least three cards are selected
You may have selected a card which is not part of the set; if so deselect
it and try again. As yet there will be no existing sets, so addition is
not possible.
After submitting any sets (or before if you like) if you have any
cards left in your hand you must make an exchange, which is one of the
three action detailed in the Rules section above. The methods are as
follows:
1. To take the face up card: select it with the mouse so that it has a
box around it; then select the card from your hand which you want to
drop. The exchange then takes place.
2. To take the face down card or take no card: select facedown card and it will
be turned face up. Then to take this card select the card you want to drop
and the exchange occurs; or to take no card select the face up pile (the
right hand one) and the card from the face down pack (which is now face
up) will be copied to the face up pack, and the face down pack is once
again displayed as the reverse of a card.
Whichever of these actions is taken, a message appears asking the
player to click on the continue gadget to go on. At this point, either do
this for the next player to have his turn, or you may submit further
sets, as described before.
Pressing continue before an exchange has been made will display a
message telling you that no exchange has been made; so make one before
selecting the gadget again.
When you legitimately press continue, the pointer becomes a 2, and
the player name on line two becomes Lisa. You may at
this point see a message "... is thinking", depending on the complexity
of the situtation. When a move has been decided upon a message appears
informing you of which pile the card was taken from, and the number of
cards submitted. When you have read this hit continue again, and it will
become Mike's turn. After he has made a move a short description is again
displayed, and pressing continue again means it is your turn again.
See reference section for details of how to add cards to existing sets.
This cycle continues until one player has no cards left, at which
point the end of round requester appears to announce the winner. This
lists how many points each player has, the number of rounds in the game
and the number of the round just completed, and then waits for you to select
its 'proceed' gadget, when the next round will begin as before, if any
remain in the current game. If not the end of game requester appears to
announce which player has won the overall game. Selecting proceed from
here will return the program to its initial state, from where another
game can be started.
--------------------------------------------------------------------------
Modes Of Play
The program has been designed to allow various combinations of human and
AutoPlayers to compete, of which the following is a list
3 human players
2 human players
3 AutoPlayers
2 AutoPlayers
2 human players with one AutoPlayer
1 human player with two AutoPlayers
1 human with 1 AutoPlayer
These various combinations are achieved using the SPECIAL->MANUAL CONTROL
submenu explained in the reference section below. When there is more than
one human player competing at the start of a round, in order that the
players have time to change places without cheating occuring, the program
will automatically wait for the continue gadget to be pressed before
showing the human players cards, by which time the previous player will
have turned away. As a further security measure, if when the player comes
to take his turn, the turn number shown is his status area is not the
same as it was at the end of his last turn, then the previous player must
have cheated by going around each player and looking at their cards. When
continue is selected the turn number is increased by 1.
The continuous play option (see below) is included for games with no
human players; although it can be used when there are some, doing so
means that the players will not be able to read the descriptions of what
the AutoPlayers are doing, and the round winners will not be announced.
Note that when games are played with more than one human player, all
of the viewcards menu items should be unchecked; the cards of each of the
human players are then automatically displayed at the start of their turn,
and then hidden again at the end.
--------------------------------------------------------------------------
Reference.
This section gives details on how to perform actions in the game, and
on what the menus do.
actions: Making an exchange
When it is your turn, to take the face up card, click on it so that a box
appears around it, and then click on the card you want to drop.
When it is your turn, to take the face down card, click on it so that a box
appears around it, and then click on the card you want to drop.
When it is your turn, to take no card, click on the face down card, and
then on the face up card to make the exchange. (Look at it first to see
if you want it.)
Changing player names
At any time, click on a player name gadget (the name with the box
around it) and edit it to the new name.
Changing the number of rounds in a game. DEFAULT:7
During a game click on the number of rounds gadget on line four and
edit it to a new number. Entering a number less than the current round
number will cause the game to end after the completion of the current
round.
Submitting a set
When it is your turn, select the cards which form a set (according to the
rules described above) and then click on the "submit new set" gadget on
the right of the screen. If the cards selected form a valid set they will
be removed from your hand and displayed on the right of the screen. If
they do not form a valid set, you will know this because the cards will
remain selected in your hand and will not appear in the sets area. This
means that either there were less than three cards selected (at least
this many are needed for submission) or one or more of the selected cards
does not fit in with the rest. You should then check which cards are
selected, and try again after making any changes. YOU CAN ONLY SUBMIT ONE
SET AT A TIME. If you have the cards 3d-4d-5d-9d-9h-9s-9c, selecting them
all at once for submission will not work. You must select the 3-4-5,
press submit gadget, then select 9-9-9-9 and press the submit gadget
again to win.
***** The program has now been updated to display a message telling the
player whether or not the submission was accepted.
Adding to a set
When it is your turn, select the cards you want to add to a single set,
in any order, and to add to a set of cards of the same suit you can select
cards to add at both ends all in one go. After this select the set you want to
add them to by clicking on one of the cards in the set. Now any selected cards
which can be added to that set will be removed from your hand and added to
the set; any highlighted cards in your hand will return to normal. If no
highlighted cards could be added to the set the will remain highlighted
in the hand of the player. Any number of cards can be added to a set.
***** The program has now been updated to display a message to tell the
player whether or not any of the selected cards were added to the
selected set.
All other actions are carried out through menu options described below.
PROJECT->PLAY->
This submenu allows either a two or a three player game to be started
or ended. The end game option is active only during a game, and the start
game options are active only when no game is in progress.
When the exit game option is selected, a message appears in the title
bar asking you to verify your choice with the verification menu. Either
select the verify menu item to confirm, or reselect the exit game item on
this menu to cancel. Normal play can continue throughout.
PROJECT->REORDER
This item allows the cards of the current player's hand to be
reordered. When selected, you are asked to select the players's cards in
the order they should appear from left to right. As the last card is
selected the cards are redisplayed in the new order.
PROJECT->ABOUT
Description of program.
PROJECT->QUIT
Exit program. This causes a message to appear in the title bar asking
you to select VERIFY->VERIFYQUITPROGRAM to confirm. Doing this will end
the current game (if in progress) and display the result, and then end
the program. Note: the request can be cancelled by reselecting the
PROJECT->QUIT option. Normal play can continue while the message is
present in the title bar.
INTELLIGENCE-> DEFAULT:4 for each player
This menu controls the characteristics of the AutoPlayers. There is
an intelligence setting for each player: level 1 is the easiest,
and level 10 is the hardest. The level has no effect for players under
manual control.
SPECIAL->VIEWCARDS
This submenu controls whether the cards of each player are always
visible; there is a subitem for each player which, if checked, means that
player's cards are always visible.
NB: Changing these items only takes effect when the player concerned has
their next turn.
NB: If a player is under manual control their cards are automatically
displayed when it is their turn, and only hidden if their viewcards
item is unchecked.
SPECIAL->MANUAL DEAL
This item allows the player to select the cards for each player at
the start of the round. When selected, at the start of the round a
requester is displayed with every card in it. The number of the player
for whom the cards are currently being selected appears under the
pointer. Click on a card and it appears in that players hand. Click on it
again and it is removed. Once seven cards are selected no more can be
added. When you have selected all the cards for a player select ACCEPT to
select cards for the next player. After the cards for each player have
been selected, ACCEPT begins the game.
NB: any number of cards upto seven may be dealt to a player.
NB: the AUTODEAL gadget can be selected at any time to automatically deal
seven cards per player from a shuffled pack.
SPECIAL->MANUAL CONTROL
This submenu has items to determine whether each player is under
manual control or AutoPlayer control (checked means manual). Changes here
take effect at the begining of that player's next turn. Changes may be
made here at any time.
SPECIAL->MODIFYMEMORY
Each player has their own memory describing where they think that each
card is. There is an entry for each card containing the following flags
CURRPLRHOLDS Current player holds
NEXTPLRHOLDS Next player holds
PREVPLRHOLDS Previous player holds
CURRPLRDROPD Current player dropped
NEXTPLRDROPD Next player dropped
PREVPLRDROPD Previous player dropped
INFUPSET In face up set on right of screen
GONEPAST In face up Pack
The flags are used in the score function to decide which cards are likely
to still be available. The modify memory option allows you to change and
inspect the contents of each player's memory. Selecting card displays the
flags currently set for that card. At this point the gadgets can be used
to change the flags set for that card in the memory. When the changes
have been made use SAVE to store the changes before selecting another
card. After making all the changes you want to use ACCEPT exit the
requester and store the changes in the player's memory, or CANCEL to exit
and discard the changes.
NB: Intelligence levels are partially implemented by randomly corrupting
player memory.
SPECIAL->OPENNEWPACK->
This submenu allows you to determine when the a new pack is opened,
after each hand is played or after each game, or not at all. This does
not have very much effect.
NB: So far as I am aware there is no possibility of cards "disappearing",
but if you think that they are, then select AFTEREACHHAND from this menu.
SPECIAL->SHUFFLE->
This is similar to the previous option but controls when cards are
shuffled instead. Again it has little effect.
SPECIAL->CONTINUOUSPLAY
This option means that there is no delay after an AutoPlayer takes a
turn while continue is pressed, and the the round winner requester is not
displayed. I.e. if left playing with all players in AutoPlayer mode the
game will progress to completion on its own and the final result will be
displayed.
***** There appears to be an intermittent bug which causes players to
change themselves to manual control. It only appears rarely - I have only
seen it once.
VERIFY->
This contains the verification items for exiting a game and quitting
the program.
--------------------------------------------------------------------------
Description of source code
The source code is contained in a number of modules so that changes
are easier to make. There are seven C modules and two header files:
C source
CARDDECL.C graphics for cards
DECL.C data declarations
MENUS.C menu declaraions
GAME.C main program, exception handler, open libraries etc.
PLAYGAME.C main game loop and associated functions
TURN.C functions to allow the user to take a turn
AUTOTURN.C functions to allow the AutoPlayers to take a turn
C headers
DEFNS.H structure templates, #DEFINE constants and macros
EXTERNS.H externally visible objects (including function
prototypes)
The code was developed and compiled using Lattice Cv5.05, with the
following compiler options: -cfist -v -y -oram: -L. The last of which
invokes the linker automatically.
Most of the code is (or was) fairly well structured, apart from the
AUTOTURN.C functions which underwent many ammendments during development.
So far as I am aware there are not any bugs left in the code which
cause a system crash. Most (see below) of the quirks in the machine's
gameplay appear to have been removed.
* One bug appears to remain, which means there is a chance that when three
AutoPlayers play together with each of them being on level 10 and each of
them has a single card left, a situation may arrise where each player
takes the faceup card each time, and drops the card they selected last
time (since it is the only one they hold). As a result the same cards
keep going around each player. If this happens simply take manual control
of any one player, when it is their turn select the face down card; then
return control to AutoPlayer. This cannot happen when a human is
playing, neither can it happen when any one player is on less than level
10 since in that case a random decision is bound to be used eventually.
As mentioned, this does not affect games with any human competitors .
****** When the program first starts running you may see a window open
and then close on the WorkBench screen. This window seems to open
automatically when the program is run from the icon, and does not happen
when the shell is used. Using Iconx only creates further problems. The
only way I have found to remove the problem is to fclose() both stdin and
stdout, which is what the program now does.
Note that when viewing the source code, tab stops should not be larger
than four characters, otherwise much of the code disappears off the right
of the screen.
Coding and Graphics by Simon Preene, July - October 1990